package E_2024;

import java.util.Arrays;

/*
    小明和朋友玩跳格子游戏，有n个连续格子组成的圆圈，每个格子有不同的分数，
    小朋友可以选择从任意格子起跳，但是不能跳连续的格子，不能回头跳，
    也不能超过一圈:给定一个代表每个格子得分的非负整数数组，计算能够得到的最高分数。
输入描述
    给定一个数例，第一个格子和最后一个格子收尾相连，如: 2 3 2
输出描述
    输出能够得到的最高分，如: 3
    说明
    1 <= nums.length <= 100
    0 <= nums[] <= 1000
示例1:
    输入
    2 3 2
    输出
    3
    说明只能跳3这个格子，因为第一个格子和第三个格子收尾相连
示例2
    输入
    1 2 3 1
    输出
    4
    说明
    1+3=4
https://leetcode.cn/problems/house-robber-ii/solutions/722767/da-jia-jie-she-ii-by-leetcode-solution-bwja/
 */
public class E_200_13 {
    public static void main(String[] args) {
        ans(new int[]{1});
        ans(new int[]{1,2,3});
        ans(new int[]{1,2,3,1});
        ans(new int[]{2,7,9,3,1});
    }
    public static void ans(int[] arr){
        int left = 0;
        int right = 0;
        for (int i = 0; i <= arr.length - 2; i++) {
            int temp = right;
            right = Math.max(left + arr[i], right);
            left = temp;
        }
        int left1 = 0;
        int right1 = 0;
        for (int i = 1; i <= arr.length - 1; i++) {
            int temp = right1;
            right1 = Math.max(left1 + arr[i], right1);
            left1 = temp;
        }
        System.out.println(Math.max(right1,right));
    }
}
